package com.amado.course34Thread;

/**
 * 
 * 
 * 实现线程有两种方式： 1、继承Thread类 重写run方法， 2、实现Runnable接口，实现run方法，
 * 
 * 通过start启动一个线程
 * 
 * 线程状态。线程可以处于下列状态之一：
 * 
 * NEW 至今尚未启动的线程处于这种状态。 RUNNABLE 正在 Java 虚拟机中执行的线程处于这种状态。 BLOCKED
 * 受阻塞并等待某个监视器锁的线程处于这种状态。 WAITING 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。 TIMED_WAITING
 * 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。 TERMINATED 已退出的线程处于这种状态。
 */
public class S02RunableTest implements Runnable {
	@Override
	public void run() {
		try {
			for (int i = 0; i < 5; i++) {
				Thread.sleep(400);
				System.out.println(Thread.currentThread().getName() + ":---------" + i);
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Runnable runnable = new S02RunableTest();
		/**
		 * 启动一个线程使用Thread.start()
		 */
		new Thread(runnable).start();
		for (int i = 0; i < 4; i++) {
			try {
				Thread.sleep(400);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			System.out.println(Thread.currentThread().getName() + ":" + i);
		}
	}
}
